package com.chengyu.core.request;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 用户信息表
 *
 * @author zhyg dengzhiming@dhcc.com.cn
 * @since 3.0 2022-03-01
 */
@Data
@ApiModel(value = "用户信息表-请求")
public class TblMemberReq implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "ID")
    @TableId(type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "会员号")
    private String number;
    @ApiModelProperty(value = "昵称")
    private String nickName;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "头像")
    private String headImg;
    @ApiModelProperty(value = "普通会员等级ID")
    private Long memberGradeId;
    @ApiModelProperty(value = "普通会员等级-升级时间")
    private Date gradeUpdateTime;
    @ApiModelProperty(value = "普通会员等级-时效类型{1、永久有效 2、X月内有效}")
    private Integer gradeEffectType;
    @ApiModelProperty(value = "普通会员等级-等级失效时间")
    private Date gradeExpireTime;
    @ApiModelProperty(value = "等级分")
    private Integer gradeNum;
    @ApiModelProperty(value = "注册时间")
    private Date regTime;
    @ApiModelProperty(value = "上次登录时间")
    private Date lastLoginTime;
    @ApiModelProperty(value = "创建人")
    private String createUser;
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    @ApiModelProperty(value = "修改人")
    private String updateUser;
    @ApiModelProperty(value = "修改时间")
    private Date updateTime;
    @ApiModelProperty(value = "最小会员等级ID")
    private Long minGradeId;
    @ApiModelProperty(value = "是否拉黑{0、否 1、是}")
    private Integer isBlacklist;
    @ApiModelProperty(value = "是否注销{0、否 1、是}")
    private Integer deleted;
    @ApiModelProperty(value = "推荐二维码")
    private String recommendImg;
    @ApiModelProperty(value = "身份证")
    private String idCard;
    @ApiModelProperty(value = "性别{0、男 1、女}")
    private Integer sex;
    @ApiModelProperty(value = "生日")
    private String birthday;
    @ApiModelProperty(value = "渠道")
    private String channel;
    @ApiModelProperty(value = "真实姓名")
    private String realName;
    @ApiModelProperty(value = "微信省份ID{关联：sys_region.id}")
    private Long wxProvinceId;
    @ApiModelProperty(value = "微信城市ID{关联：sys_region.id}")
    private Long wxCityId;
    @ApiModelProperty(value = "微信openId")
    private String wxOpenId;
    @ApiModelProperty(value = "微信unionId")
    private String wxUnionId;
    @ApiModelProperty(value = "累计获取减碳量")
    private BigDecimal carbonNumAddTotal;
    @ApiModelProperty(value = "累计获取碳积分")
    private BigDecimal pointsNumAddTotal;
    @ApiModelProperty(value = "累计消耗减碳量")
    private BigDecimal carbonNumSubTotal;
    @ApiModelProperty(value = "累计消耗碳积分")
    private BigDecimal pointsNumSubTotal;
    @ApiModelProperty(value = "运营租户编码{关联：sys_tenant.code}")
    private Long tenantCode;
    @ApiModelProperty(value = "运营城市ID{关联：sys_region.id}")
    private Long cityId;
    /**
     * 用户定位的城市
     */
    @ApiModelProperty(value = "用户定位的城市")
    private String locCity;
    /**
     * 设备id
     */
    @ApiModelProperty(value = "设备id")
    private String deviceId;
    /**
     * 设备名称
     */
    @ApiModelProperty(value = "设备名称")
    private String deviceBrand;
    /**
     * 徽章标记{0、未领取 1、已领取}
     */
    @ApiModelProperty(value = "徽章标记{0、未领取 1、已领取}")
    private Integer badgeFlag;
    @ApiModelProperty(value = "用户星球等级级别")
    private Integer gradeLevel;
    private String uuid;

    @ApiModelProperty(value = "页码")
    private Long page;
    @ApiModelProperty(value = "显示行数")
    private Long limit;

    @ApiModelProperty(value = "排序字段列表；有先后顺序。可以为空")
    private List<PageReq.Order> orders;

    /**
     * 排序对象
     */
    @Data
    public static class Order {

        @ApiModelProperty(value = "排序的列")
        private String column;
        @ApiModelProperty(value = "排序：true 表示降序，false 表示倒序")
        private boolean asc = true;
    }


}
